package com.crm.dao.mapper.customMapper.orderManagerCustomMapper;

import com.crm.model.entity.orderManager.CustomerProductOrderDetail;
import com.crm.model.vo.customerManager.CustomerOrderBfhkVO;
import com.crm.model.vo.orderManager.OrderActivityVO;
import com.crm.model.vo.orderManager.OrderDetailDelVO;
import com.crm.model.vo.returnMoney.FinanceProductVO;
import com.crm.model.vo.sendRoyaltyManager.SendRoyaltyProductVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;


public interface ProductOrderDetailMapper {

    /**
     * 删除订单产品
     * @param delVo
     */
    void delOrderDetail(OrderDetailDelVO delVo);

    /**
     * 根据订单标号查询退款记录
     * @return
     */
    List<OrderDetailDelVO> getDelOrderProductLogList(@Param("orderId") String orderId);

    /**
     * 根据类型查询订单产品
     * @param productOrderId
     * @param type
     * @return
     */
    List<FinanceProductVO> getOrderProductList(@Param("orderId") String productOrderId, @Param("type") Integer type);

    /**
     * 根據訂單id獲取訂單產品和活動信息
     * @param productOrderId
     * @return
     */
    List<SendRoyaltyProductVO> financeOrderProductAndActivity(@Param("orderId") String productOrderId, @Param("type") Integer type);

    /**
     * 获取订单产品、活动数量
     * @param productOrderId
     * @return
     */
    Integer getOrderProductNum(@Param("orderId")String productOrderId);

    /**
     * 查询活动产品数量
     * @param orderDetailId
     * @return
     */
    OrderActivityVO selectActivityProductCount(@Param("orderDetailId") String orderDetailId);

    /**
     * 通过订单id查询部分回款订单下的产品
     * @param productOrderId 订单id
     * @return
     */
    List<CustomerOrderBfhkVO> selectCustomerOrderBfhkVOList(@Param("productOrderId") String productOrderId);

    /**
     * 通过订单id、产品id、产品类型查询
     * @param productOrderId
     * @param orderRelationId
     * @param productOrderDetailType
     * @return
     */
    CustomerProductOrderDetail selectProductOrderDetailByOrderIdAndProductId(@Param("orderId") String productOrderId,
                                                                             @Param("orderRelationId") String orderRelationId,
                                                                             @Param("detailType") String productOrderDetailType);

    Integer selectOrderProductCount(@Param("orderId") String orderId);
}